统计科学好文丨最近疯传的SIR传染病模型是什么?
The following article is from 俊红的数据分析之路 Author 张俊红
最近看到在网上传的一张SIR传染病模型的图,很多人应该对这个模型不是很了解,今天就讲一下这个模型。这一篇只讲学术,不讨论别的。
SIR模型是传染病模型中最经典的一个,类似的还有SI和SIS两种。SIR是三个单词首字母的缩写,其中S是Susceptible的缩写,表示易感者;I是Infective的缩写,表示感染者;R是Removal的缩写,表示移除者。
这个模型本身是在研究这三者的关系。在病毒最开始的时候,所有人都是易感者,也就是所有人都有可能中病毒;当一部分人在接触到病毒以后中病毒了,变成了感染者;感染者会接受各种治疗,最后变成了移除者。
这三者的关系如下图所示:
在病毒最开始的时候S=N,然后S以每天α的速度变到I,I又以每天β的速度变到R,不同时刻t下这三者的关系为:
N(t) = S(t) + I(t) + R(t)
S(t+1) = S(t) - αS(t)
I(t+1) = I(t) - βI(t)
R(t+1) = R(t) + βI(t)
%matplotlib inline
import scipy.integrate as spi
import numpy as np
import pylab as pl
alpha=1.4247
beta=0.14286
TS=1.0 #观察间隔
ND=70.0 #观察结束日期
S0=1-1e-6 #初始易感人数
I0=1e-6 #初始感染人数
INPUT = (S0, I0, 0.0)
def diff_eqs(INP,t):
'''The main set of equations'''
Y=np.zeros((3))
V = INP
Y[0] = - alpha * V[0] * V[1]
Y[1] = alpha * V[0] * V[1] - beta * V[1]
Y[2] = beta * V[1]
return Y
t_start = 0.0
t_end = ND
t_inc = TS
t_range = np.arange(t_start, t_end+t_inc, t_inc) #生成日期范围
RES = spi.odeint(diff_eqs,INPUT,t_range)
pl.subplot(111)
pl.plot(RES[:,0], '-g', label='Susceptible')
pl.plot(RES[:,1], '-r', label='Infective')
pl.plot(RES[:,2], '-k', label='Removal')
pl.legend(loc=0)
pl.title('SIR_Model')
pl.xlabel('Time')
pl.ylabel('Numbers')
pl.xlabel('Time')
1.一段时间内总人数N是不变的,也就是不考虑新生以及自然死亡的人数
2.从S到I的变化速度α、从I到R的变化速度β也是保持不变的
集Python、Excel、数据分析为一体是本书的一大特色。
本书围绕整个数据分析的常规流程:熟悉工具—明确目的—获取数据—熟悉数据—处理数据—分析数据—得出结论—验证结论—展示结论进行Excel和Python的对比实现,告诉你每一个过程中都会用到什么,过程与过程之间有什么联系。本书既可以作为系统学习数据分析操作流程的说明书,也可以作为一本数据分析师案头必备的实操工具书。
通过对比Excel功能操作去学习Python的代码实现,而不是直接学习Python代码,大大降低了学习门槛,消除对代码的恐惧心理。
▊本书适合谁
Excel已经用得熟练,想学习Python来丰富自己技能树的数据分析师
刚入行,对Excel和Python都不精通的数据分析师
其他常用Excel却想通过学习Python提高工作效率的人
▊ 关于作者
热文推荐
▼ 点击阅读原文,获取本书详情!